# Makefile prevzaty z: 
# 	http://www.cyberciti.biz/tips/build-linux-kernel-module-against-installed-kernel-source-tree.html
#
# Autor:		Radek Necas, xnecas18@stud.fit.vutbr.cz
# 				FIT VUT Brno
# Rok:			2013
# Popis:		Vytvoreni a zavedeni, zruseni a vypis modulu. 
# 				Navic dalsi pomocne funkce.
# Parametry: 	<zadne> 			- prelozi a zavede modul (build a install)
# 			 	build 				- prelozi modul
# 			 	install 			- zavede modul (potrebuje sudo)
#		     	uninstall 			- odebere modul (potrebuje sudo)
#		     	print-all-modules	- vypise vsechny zavedene moduly
#		     	print				- vypise nas modul
#		     	log					- vytvori novy terminal a bude v nem sledovat
#		     						  logovaci vystup jadra (pro printk)
#		     	clean 				- odstrani pomocne adresare (potrebuje sudo)
#		     	pack				- vytvori archiv se soubory projektu
#
# #################################################################################

# Promenne
PROJ=memorySearch
FILES=Makefile ${PROJ}.c
KDIR=/lib/modules/$(shell uname -r)/build
LOGFILE=/var/log/messages
TERMINAL=gnome-terminal
PWD=$(shell pwd)

obj-m := ${PROJ}.o

all: build


build:
	# Prelozeni a vytvoreni modulu
	make -C $(KDIR) M=$(PWD) modules

install: build
	# Zavedeni modulu
	#modprobe ${PROJ}
	(lsmod | grep ${PROJ} > /dev/null) || (insmod ${PROJ}.ko)

uninstall:
	# Odebrani modulu
	#modprobe -r ${PROJ}
	#rmmod ${PROJ}
	(lsmod | grep ${PROJ} > /dev/null) && (rmmod ${PROJ})

reinstall:
	(lsmod | grep ${PROJ}) > /dev/null && (rmmod ${PROJ})
	make -C $(KDIR) M=$(PWD) modules
	(lsmod | grep ${PROJ} > /dev/null) || (insmod ${PROJ}.ko)

print-all-modules:
	# Vypise vsechny zavedene moduly
	lsmod

print:
	# Vypise pouze nas modul
	lsmod | grep "^${PROJ}"

log:
	# Vytvori nove okno terminalu, ktere bude sledovat logovaci soubor
	# Do nej se vypisuje pomoci printk
	${TERMINAL} -e "tail -f ${LOGFILE}" &

clean:
	# Odstraneni pomocnych adresaru
	make -C $(KDIR) M=$(PWD) clean
	rm -f ${PROJ}.tar

pack:
	# Vytvoreni tar archivu se soubory potrebnymy pro preklad
	tar -cvf ${PROJ}.tar ${FILES}

